//@charset "utf-8";
if (!document.createElement("canvas").getContext) { (function() {
        var ab = Math;
        var n = ab.round;
        var l = ab.sin;
        var A = ab.cos;
        var H = ab.abs;
        var N = ab.sqrt;
        var d = 10;
        var f = d / 2;
        var z = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];
        function y() {
            return this.context_ || (this.context_ = new D(this))
        }
        var t = Array.prototype.slice;
        function g(j, m, p) {
            var i = t.call(arguments, 2);
            return function() {
                return j.apply(m, i.concat(t.call(arguments)))
            }
        }
        function af(i) {
            return String(i).replace(/&/g, "&amp;").replace(/"/g, "&quot;")
        }
        function Y(m, j, i) {
            if (!m.namespaces[j]) {
                m.namespaces.add(j, i, "#default#VML")
            }
        }
        function R(j) {
            Y(j, "g_vml_", "urn:schemas-microsoft-com:vml");
            Y(j, "g_o_", "urn:schemas-microsoft-com:office:office");
            if (!j.styleSheets.ex_canvas_) {
                var i = j.createStyleSheet();
                i.owningElement.id = "ex_canvas_";
                i.cssText = "canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"
            }
        }
        R(document);
        var e = {
            init: function(i) {
                var j = i || document;
                j.createElement("canvas");
                j.attachEvent("onreadystatechange", g(this.init_, this, j))
            },
            init_: function(p) {
                var m = p.getElementsByTagName("canvas");
                for (var j = 0; j < m.length; j++) {
                    this.initElement(m[j])
                }
            },
            initElement: function(j) {
                if (!j.getContext) {
                    j.getContext = y;
                    R(j.ownerDocument);
                    j.innerHTML = "";
                    j.attachEvent("onpropertychange", x);
                    j.attachEvent("onresize", W);
                    var i = j.attributes;
                    if (i.width && i.width.specified) {
                        j.style.width = i.width.nodeValue + "px"
                    } else {
                        j.width = j.clientWidth
                    }
                    if (i.height && i.height.specified) {
                        j.style.height = i.height.nodeValue + "px"
                    } else {
                        j.height = j.clientHeight
                    }
                }
                return j
            }
        };
        function x(j) {
            var i = j.srcElement;
            switch (j.propertyName) {
            case "width":
                i.getContext().clearRect();
                i.style.width = i.attributes.width.nodeValue + "px";
                i.firstChild.style.width = i.clientWidth + "px";
                break;
            case "height":
                i.getContext().clearRect();
                i.style.height = i.attributes.height.nodeValue + "px";
                i.firstChild.style.height = i.clientHeight + "px";
                break
            }
        }
        function W(j) {
            var i = j.srcElement;
            if (i.firstChild) {
                i.firstChild.style.width = i.clientWidth + "px";
                i.firstChild.style.height = i.clientHeight + "px"
            }
        }
        e.init();
        var k = [];
        for (var ae = 0; ae < 16; ae++) {
            for (var ad = 0; ad < 16; ad++) {
                k[ae * 16 + ad] = ae.toString(16) + ad.toString(16)
            }
        }
        function B() {
            return [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
        }
        function J(p, m) {
            var j = B();
            for (var i = 0; i < 3; i++) {
                for (var ah = 0; ah < 3; ah++) {
                    var Z = 0;
                    for (var ag = 0; ag < 3; ag++) {
                        Z += p[i][ag] * m[ag][ah]
                    }
                    j[i][ah] = Z
                }
            }
            return j
        }
        function v(j, i) {
            i.fillStyle = j.fillStyle;
            i.lineCap = j.lineCap;
            i.lineJoin = j.lineJoin;
            i.lineWidth = j.lineWidth;
            i.miterLimit = j.miterLimit;
            i.shadowBlur = j.shadowBlur;
            i.shadowColor = j.shadowColor;
            i.shadowOffsetX = j.shadowOffsetX;
            i.shadowOffsetY = j.shadowOffsetY;
            i.strokeStyle = j.strokeStyle;
            i.globalAlpha = j.globalAlpha;
            i.font = j.font;
            i.textAlign = j.textAlign;
            i.textBaseline = j.textBaseline;
            i.arcScaleX_ = j.arcScaleX_;
            i.arcScaleY_ = j.arcScaleY_;
            i.lineScale_ = j.lineScale_
        }
        var b = {
            aliceblue: "#F0F8FF",
            antiquewhite: "#FAEBD7",
            aquamarine: "#7FFFD4",
            azure: "#F0FFFF",
            beige: "#F5F5DC",
            bisque: "#FFE4C4",
            black: "#000000",
            blanchedalmond: "#FFEBCD",
            blueviolet: "#8A2BE2",
            brown: "#A52A2A",
            burlywood: "#DEB887",
            cadetblue: "#5F9EA0",
            chartreuse: "#7FFF00",
            chocolate: "#D2691E",
            coral: "#FF7F50",
            cornflowerblue: "#6495ED",
            cornsilk: "#FFF8DC",
            crimson: "#DC143C",
            cyan: "#00FFFF",
            darkblue: "#00008B",
            darkcyan: "#008B8B",
            darkgoldenrod: "#B8860B",
            darkgray: "#A9A9A9",
            darkgreen: "#006400",
            darkgrey: "#A9A9A9",
            darkkhaki: "#BDB76B",
            darkmagenta: "#8B008B",
            darkolivegreen: "#556B2F",
            darkorange: "#FF8C00",
            darkorchid: "#9932CC",
            darkred: "#8B0000",
            darksalmon: "#E9967A",
            darkseagreen: "#8FBC8F",
            darkslateblue: "#483D8B",
            darkslategray: "#2F4F4F",
            darkslategrey: "#2F4F4F",
            darkturquoise: "#00CED1",
            darkviolet: "#9400D3",
            deeppink: "#FF1493",
            deepskyblue: "#00BFFF",
            dimgray: "#696969",
            dimgrey: "#696969",
            dodgerblue: "#1E90FF",
            firebrick: "#B22222",
            floralwhite: "#FFFAF0",
            forestgreen: "#228B22",
            gainsboro: "#DCDCDC",
            ghostwhite: "#F8F8FF",
            gold: "#FFD700",
            goldenrod: "#DAA520",
            grey: "#808080",
            greenyellow: "#ADFF2F",
            honeydew: "#F0FFF0",
            hotpink: "#FF69B4",
            indianred: "#CD5C5C",
            indigo: "#4B0082",
            ivory: "#FFFFF0",
            khaki: "#F0E68C",
            lavender: "#E6E6FA",
            lavenderblush: "#FFF0F5",
            lawngreen: "#7CFC00",
            lemonchiffon: "#FFFACD",
            lightblue: "#ADD8E6",
            lightcoral: "#F08080",
            lightcyan: "#E0FFFF",
            lightgoldenrodyellow: "#FAFAD2",
            lightgreen: "#90EE90",
            lightgrey: "#D3D3D3",
            lightpink: "#FFB6C1",
            lightsalmon: "#FFA07A",
            lightseagreen: "#20B2AA",
            lightskyblue: "#87CEFA",
            lightslategray: "#778899",
            lightslategrey: "#778899",
            lightsteelblue: "#B0C4DE",
            lightyellow: "#FFFFE0",
            limegreen: "#32CD32",
            linen: "#FAF0E6",
            magenta: "#FF00FF",
            mediumaquamarine: "#66CDAA",
            mediumblue: "#0000CD",
            mediumorchid: "#BA55D3",
            mediumpurple: "#9370DB",
            mediumseagreen: "#3CB371",
            mediumslateblue: "#7B68EE",
            mediumspringgreen: "#00FA9A",
            mediumturquoise: "#48D1CC",
            mediumvioletred: "#C71585",
            midnightblue: "#191970",
            mintcream: "#F5FFFA",
            mistyrose: "#FFE4E1",
            moccasin: "#FFE4B5",
            navajowhite: "#FFDEAD",
            oldlace: "#FDF5E6",
            olivedrab: "#6B8E23",
            orange: "#FFA500",
            orangered: "#FF4500",
            orchid: "#DA70D6",
            palegoldenrod: "#EEE8AA",
            palegreen: "#98FB98",
            paleturquoise: "#AFEEEE",
            palevioletred: "#DB7093",
            papayawhip: "#FFEFD5",
            peachpuff: "#FFDAB9",
            peru: "#CD853F",
            pink: "#FFC0CB",
            plum: "#DDA0DD",
            powderblue: "#B0E0E6",
            rosybrown: "#BC8F8F",
            royalblue: "#4169E1",
            saddlebrown: "#8B4513",
            salmon: "#FA8072",
            sandybrown: "#F4A460",
            seagreen: "#2E8B57",
            seashell: "#FFF5EE",
            sienna: "#A0522D",
            skyblue: "#87CEEB",
            slateblue: "#6A5ACD",
            slategray: "#708090",
            slategrey: "#708090",
            snow: "#FFFAFA",
            springgreen: "#00FF7F",
            steelblue: "#4682B4",
            tan: "#D2B48C",
            thistle: "#D8BFD8",
            tomato: "#FF6347",
            turquoise: "#40E0D0",
            violet: "#EE82EE",
            wheat: "#F5DEB3",
            whitesmoke: "#F5F5F5",
            yellowgreen: "#9ACD32"
        };
        function M(j) {
            var p = j.indexOf("(", 3);
            var i = j.indexOf(")", p + 1);
            var m = j.substring(p + 1, i).split(",");
            if (m.length != 4 || j.charAt(3) != "a") {
                m[3] = 1
            }
            return m
        }
        function c(i) {
            return parseFloat(i) / 100
        }
        function r(j, m, i) {
            return Math.min(i, Math.max(m, j))
        }
        function I(ag) {
            var i, ai, aj, ah, ak, Z;
            ah = parseFloat(ag[0]) / 360 % 360;
            if (ah < 0) {
                ah++
            }
            ak = r(c(ag[1]), 0, 1);
            Z = r(c(ag[2]), 0, 1);
            if (ak == 0) {
                i = ai = aj = Z
            } else {
                var j = Z < 0.5 ? Z * (1 + ak) : Z + ak - Z * ak;
                var m = 2 * Z - j;
                i = a(m, j, ah + 1 / 3);
                ai = a(m, j, ah);
                aj = a(m, j, ah - 1 / 3)
            }
            return "#" + k[Math.floor(i * 255)] + k[Math.floor(ai * 255)] + k[Math.floor(aj * 255)]
        }
        function a(j, i, m) {
            if (m < 0) {
                m++
            }
            if (m > 1) {
                m--
            }
            if (6 * m < 1) {
                return j + (i - j) * 6 * m
            } else {
                if (2 * m < 1) {
                    return i
                } else {
                    if (3 * m < 2) {
                        return j + (i - j) * (2 / 3 - m) * 6
                    } else {
                        return j
                    }
                }
            }
        }
        var C = {};
        function F(j) {
            if (j in C) {
                return C[j]
            }
            var ag, Z = 1;
            j = String(j);
            if (j.charAt(0) == "#") {
                ag = j
            } else {
                if (/^rgb/.test(j)) {
                    var p = M(j);
                    var ag = "#",
                    ah;
                    for (var m = 0; m < 3; m++) {
                        if (p[m].indexOf("%") != -1) {
                            ah = Math.floor(c(p[m]) * 255)
                        } else {
                            ah = +p[m]
                        }
                        ag += k[r(ah, 0, 255)]
                    }
                    Z = +p[3]
                } else {
                    if (/^hsl/.test(j)) {
                        var p = M(j);
                        ag = I(p);
                        Z = p[3]
                    } else {
                        ag = b[j] || j
                    }
                }
            }
            return C[j] = {
                color: ag,
                alpha: Z
            }
        }
        var o = {
            style: "normal",
            variant: "normal",
            weight: "normal",
            size: 10,
            family: "sans-serif"
        };
        var L = {};
        function E(i) {
            if (L[i]) {
                return L[i]
            }
            var p = document.createElement("div");
            var m = p.style;
            try {
                m.font = i
            } catch(j) {}
            return L[i] = {
                style: m.fontStyle || o.style,
                variant: m.fontVariant || o.variant,
                weight: m.fontWeight || o.weight,
                size: m.fontSize || o.size,
                family: m.fontFamily || o.family
            }
        }
        function u(m, j) {
            var i = {};
            for (var ah in m) {
                i[ah] = m[ah]
            }
            var ag = parseFloat(j.currentStyle.fontSize),
            Z = parseFloat(m.size);
            if (typeof m.size == "number") {
                i.size = m.size
            } else {
                if (m.size.indexOf("px") != -1) {
                    i.size = Z
                } else {
                    if (m.size.indexOf("em") != -1) {
                        i.size = ag * Z
                    } else {
                        if (m.size.indexOf("%") != -1) {
                            i.size = (ag / 100) * Z
                        } else {
                            if (m.size.indexOf("pt") != -1) {
                                i.size = Z / 0.75
                            } else {
                                i.size = ag
                            }
                        }
                    }
                }
            }
            i.size *= 0.981;
            return i
        }
        function ac(i) {
            return i.style + " " + i.variant + " " + i.weight + " " + i.size + "px " + i.family
        }
        var s = {
            butt: "flat",
            round: "round"
        };
        function S(i) {
            return s[i] || "square"
        }
        function D(i) {
            this.m_ = B();
            this.mStack_ = [];
            this.aStack_ = [];
            this.currentPath_ = [];
            this.strokeStyle = "#000";
            this.fillStyle = "#000";
            this.lineWidth = 1;
            this.lineJoin = "miter";
            this.lineCap = "butt";
            this.miterLimit = d * 1;
            this.globalAlpha = 1;
            this.font = "10px sans-serif";
            this.textAlign = "left";
            this.textBaseline = "alphabetic";
            this.canvas = i;
            var m = "width:" + i.clientWidth + "px;height:" + i.clientHeight + "px;overflow:hidden;position:absolute";
            var j = i.ownerDocument.createElement("div");
            j.style.cssText = m;
            i.appendChild(j);
            var p = j.cloneNode(false);
            p.style.backgroundColor = "red";
            p.style.filter = "alpha(opacity=0)";
            i.appendChild(p);
            this.element_ = j;
            this.arcScaleX_ = 1;
            this.arcScaleY_ = 1;
            this.lineScale_ = 1
        }
        var q = D.prototype;
        q.clearRect = function() {
            if (this.textMeasureEl_) {
                this.textMeasureEl_.removeNode(true);
                this.textMeasureEl_ = null
            }
            this.element_.innerHTML = ""
        };
        q.beginPath = function() {
            this.currentPath_ = []
        };
        q.moveTo = function(j, i) {
            var m = V(this, j, i);
            this.currentPath_.push({
                type: "moveTo",
                x: m.x,
                y: m.y
            });
            this.currentX_ = m.x;
            this.currentY_ = m.y
        };
        q.lineTo = function(j, i) {
            var m = V(this, j, i);
            this.currentPath_.push({
                type: "lineTo",
                x: m.x,
                y: m.y
            });
            this.currentX_ = m.x;
            this.currentY_ = m.y
        };
        q.bezierCurveTo = function(m, j, ak, aj, ai, ag) {
            var i = V(this, ai, ag);
            var ah = V(this, m, j);
            var Z = V(this, ak, aj);
            K(this, ah, Z, i)
        };
        function K(i, Z, m, j) {
            i.currentPath_.push({
                type: "bezierCurveTo",
                cp1x: Z.x,
                cp1y: Z.y,
                cp2x: m.x,
                cp2y: m.y,
                x: j.x,
                y: j.y
            });
            i.currentX_ = j.x;
            i.currentY_ = j.y
        }
        q.quadraticCurveTo = function(ai, m, j, i) {
            var ah = V(this, ai, m);
            var ag = V(this, j, i);
            var aj = {
                x: this.currentX_ + 2 / 3 * (ah.x - this.currentX_),
                y: this.currentY_ + 2 / 3 * (ah.y - this.currentY_)
            };
            var Z = {
                x: aj.x + (ag.x - this.currentX_) / 3,
                y: aj.y + (ag.y - this.currentY_) / 3
            };
            K(this, aj, Z, ag)
        };
        q.arc = function(al, aj, ak, ag, j, m) {
            ak *= d;
            var ap = m ? "at": "wa";
            var am = al + A(ag) * ak - f;
            var ao = aj + l(ag) * ak - f;
            var i = al + A(j) * ak - f;
            var an = aj + l(j) * ak - f;
            if (am == i && !m) {
                am += 0.125
            }
            var Z = V(this, al, aj);
            var ai = V(this, am, ao);
            var ah = V(this, i, an);
            this.currentPath_.push({
                type: ap,
                x: Z.x,
                y: Z.y,
                radius: ak,
                xStart: ai.x,
                yStart: ai.y,
                xEnd: ah.x,
                yEnd: ah.y
            })
        };
        q.rect = function(m, j, i, p) {
            this.moveTo(m, j);
            this.lineTo(m + i, j);
            this.lineTo(m + i, j + p);
            this.lineTo(m, j + p);
            this.closePath()
        };
        q.strokeRect = function(m, j, i, p) {
            var Z = this.currentPath_;
            this.beginPath();
            this.moveTo(m, j);
            this.lineTo(m + i, j);
            this.lineTo(m + i, j + p);
            this.lineTo(m, j + p);
            this.closePath();
            this.stroke();
            this.currentPath_ = Z
        };
        q.fillRect = function(m, j, i, p) {
            var Z = this.currentPath_;
            this.beginPath();
            this.moveTo(m, j);
            this.lineTo(m + i, j);
            this.lineTo(m + i, j + p);
            this.lineTo(m, j + p);
            this.closePath();
            this.fill();
            this.currentPath_ = Z
        };
        q.createLinearGradient = function(j, p, i, m) {
            var Z = new U("gradient");
            Z.x0_ = j;
            Z.y0_ = p;
            Z.x1_ = i;
            Z.y1_ = m;
            return Z
        };
        q.createRadialGradient = function(p, ag, m, j, Z, i) {
            var ah = new U("gradientradial");
            ah.x0_ = p;
            ah.y0_ = ag;
            ah.r0_ = m;
            ah.x1_ = j;
            ah.y1_ = Z;
            ah.r1_ = i;
            return ah
        };
        q.drawImage = function(aq, m) {
            var aj, ah, al, ay, ao, am, at, aA;
            var ak = aq.runtimeStyle.width;
            var ap = aq.runtimeStyle.height;
            aq.runtimeStyle.width = "auto";
            aq.runtimeStyle.height = "auto";
            var ai = aq.width;
            var aw = aq.height;
            aq.runtimeStyle.width = ak;
            aq.runtimeStyle.height = ap;
            if (arguments.length == 3) {
                aj = arguments[1];
                ah = arguments[2];
                ao = am = 0;
                at = al = ai;
                aA = ay = aw
            } else {
                if (arguments.length == 5) {
                    aj = arguments[1];
                    ah = arguments[2];
                    al = arguments[3];
                    ay = arguments[4];
                    ao = am = 0;
                    at = ai;
                    aA = aw
                } else {
                    if (arguments.length == 9) {
                        ao = arguments[1];
                        am = arguments[2];
                        at = arguments[3];
                        aA = arguments[4];
                        aj = arguments[5];
                        ah = arguments[6];
                        al = arguments[7];
                        ay = arguments[8]
                    } else {
                        throw Error("Invalid number of arguments")
                    }
                }
            }
            var az = V(this, aj, ah);
            var p = at / 2;
            var j = aA / 2;
            var ax = [];
            var i = 10;
            var ag = 10;
            ax.push(" <g_vml_:group", ' coordsize="', d * i, ",", d * ag, '"', ' coordorigin="0,0"', ' style="width:', i, "px;height:", ag, "px;position:absolute;");
            if (this.m_[0][0] != 1 || this.m_[0][1] || this.m_[1][1] != 1 || this.m_[1][0]) {
                var Z = [];
                Z.push("M11=", this.m_[0][0], ",", "M12=", this.m_[1][0], ",", "M21=", this.m_[0][1], ",", "M22=", this.m_[1][1], ",", "Dx=", n(az.x / d), ",", "Dy=", n(az.y / d), "");
                var av = az;
                var au = V(this, aj + al, ah);
                var ar = V(this, aj, ah + ay);
                var an = V(this, aj + al, ah + ay);
                av.x = ab.max(av.x, au.x, ar.x, an.x);
                av.y = ab.max(av.y, au.y, ar.y, an.y);
                ax.push("padding:0 ", n(av.x / d), "px ", n(av.y / d), "px 0;filter:progid:DXImageTransform.Microsoft.Matrix(", Z.join(""), ", sizingmethod='clip');")
            } else {
                ax.push("top:", n(az.y / d), "px;left:", n(az.x / d), "px;")
            }
            ax.push(' ">', '<g_vml_:image src="', aq.src, '"', ' style="width:', d * al, "px;", " height:", d * ay, 'px"', ' cropleft="', ao / ai, '"', ' croptop="', am / aw, '"', ' cropright="', (ai - ao - at) / ai, '"', ' cropbottom="', (aw - am - aA) / aw, '"', " />", "</g_vml_:group>");
            this.element_.insertAdjacentHTML("BeforeEnd", ax.join(""))
        };
        q.stroke = function(ao) {
            var Z = 10;
            var ap = 10;
            var ag = 5000;
            var ai = {
                x: null,
                y: null
            };
            var an = {
                x: null,
                y: null
            };
            for (var aj = 0; aj < this.currentPath_.length; aj += ag) {
                var am = [];
                var ah = false;
                am.push("<g_vml_:shape", ' filled="', !!ao, '"', ' style="position:absolute;width:', Z, "px;height:", ap, 'px;"', ' coordorigin="0,0"', ' coordsize="', d * Z, ",", d * ap, '"', ' stroked="', !ao, '"', ' path="');
                var aq = false;
                for (var ak = aj; ak < Math.min(aj + ag, this.currentPath_.length); ak++) {
                    if (ak % ag == 0 && ak > 0) {
                        am.push(" m ", n(this.currentPath_[ak - 1].x), ",", n(this.currentPath_[ak - 1].y))
                    }
                    var m = this.currentPath_[ak];
                    var al;
                    switch (m.type) {
                    case "moveTo":
                        al = m;
                        am.push(" m ", n(m.x), ",", n(m.y));
                        break;
                    case "lineTo":
                        am.push(" l ", n(m.x), ",", n(m.y));
                        break;
                    case "close":
                        am.push(" x ");
                        m = null;
                        break;
                    case "bezierCurveTo":
                        am.push(" c ", n(m.cp1x), ",", n(m.cp1y), ",", n(m.cp2x), ",", n(m.cp2y), ",", n(m.x), ",", n(m.y));
                        break;
                    case "at":
                    case "wa":
                        am.push(" ", m.type, " ", n(m.x - this.arcScaleX_ * m.radius), ",", n(m.y - this.arcScaleY_ * m.radius), " ", n(m.x + this.arcScaleX_ * m.radius), ",", n(m.y + this.arcScaleY_ * m.radius), " ", n(m.xStart), ",", n(m.yStart), " ", n(m.xEnd), ",", n(m.yEnd));
                        break
                    }
                    if (m) {
                        if (ai.x == null || m.x < ai.x) {
                            ai.x = m.x
                        }
                        if (an.x == null || m.x > an.x) {
                            an.x = m.x
                        }
                        if (ai.y == null || m.y < ai.y) {
                            ai.y = m.y
                        }
                        if (an.y == null || m.y > an.y) {
                            an.y = m.y
                        }
                    }
                }
                am.push(' ">');
                if (!ao) {
                    w(this, am)
                } else {
                    G(this, am, ai, an)
                }
                am.push("</g_vml_:shape>");
                this.element_.insertAdjacentHTML("beforeEnd", am.join(""))
            }
        };
        function w(m, ag) {
            var j = F(m.strokeStyle);
            var p = j.color;
            var Z = j.alpha * m.globalAlpha;
            var i = m.lineScale_ * m.lineWidth;
            if (i < 1) {
                Z *= i
            }
            ag.push("<g_vml_:stroke", ' opacity="', Z, '"', ' joinstyle="', m.lineJoin, '"', ' miterlimit="', m.miterLimit, '"', ' endcap="', S(m.lineCap), '"', ' weight="', i, 'px"', ' color="', p, '" />')
        }
        function G(aq, ai, aK, ar) {
            var aj = aq.fillStyle;
            var aB = aq.arcScaleX_;
            var aA = aq.arcScaleY_;
            var j = ar.x - aK.x;
            var p = ar.y - aK.y;
            if (aj instanceof U) {
                var an = 0;
                var aF = {
                    x: 0,
                    y: 0
                };
                var ax = 0;
                var am = 1;
                if (aj.type_ == "gradient") {
                    var al = aj.x0_ / aB;
                    var m = aj.y0_ / aA;
                    var ak = aj.x1_ / aB;
                    var aM = aj.y1_ / aA;
                    var aJ = V(aq, al, m);
                    var aI = V(aq, ak, aM);
                    var ag = aI.x - aJ.x;
                    var Z = aI.y - aJ.y;
                    an = Math.atan2(ag, Z) * 180 / Math.PI;
                    if (an < 0) {
                        an += 360
                    }
                    if (an < 0.000001) {
                        an = 0
                    }
                } else {
                    var aJ = V(aq, aj.x0_, aj.y0_);
                    aF = {
                        x: (aJ.x - aK.x) / j,
                        y: (aJ.y - aK.y) / p
                    };
                    j /= aB * d;
                    p /= aA * d;
                    var aD = ab.max(j, p);
                    ax = 2 * aj.r0_ / aD;
                    am = 2 * aj.r1_ / aD - ax
                }
                var av = aj.colors_;
                av.sort(function(aN, i) {
                    return aN.offset - i.offset
                });
                var ap = av.length;
                var au = av[0].color;
                var at = av[ap - 1].color;
                var az = av[0].alpha * aq.globalAlpha;
                var ay = av[ap - 1].alpha * aq.globalAlpha;
                var aE = [];
                for (var aH = 0; aH < ap; aH++) {
                    var ao = av[aH];
                    aE.push(ao.offset * am + ax + " " + ao.color)
                }
                ai.push('<g_vml_:fill type="', aj.type_, '"', ' method="none" focus="100%"', ' color="', au, '"', ' color2="', at, '"', ' colors="', aE.join(","), '"', ' opacity="', ay, '"', ' g_o_:opacity2="', az, '"', ' angle="', an, '"', ' focusposition="', aF.x, ",", aF.y, '" />')
            } else {
                if (aj instanceof T) {
                    if (j && p) {
                        var ah = -aK.x;
                        var aC = -aK.y;
                        ai.push("<g_vml_:fill", ' position="', ah / j * aB * aB, ",", aC / p * aA * aA, '"', ' type="tile"', ' src="', aj.src_, '" />')
                    }
                } else {
                    var aL = F(aq.fillStyle);
                    var aw = aL.color;
                    var aG = aL.alpha * aq.globalAlpha;
                    ai.push('<g_vml_:fill color="', aw, '" opacity="', aG, '" />')
                }
            }
        }
        q.fill = function() {
            this.stroke(true)
        };
        q.closePath = function() {
            this.currentPath_.push({
                type: "close"
            })
        };
        function V(j, Z, p) {
            var i = j.m_;
            return {
                x: d * (Z * i[0][0] + p * i[1][0] + i[2][0]) - f,
                y: d * (Z * i[0][1] + p * i[1][1] + i[2][1]) - f
            }
        }
        q.save = function() {
            var i = {};
            v(this, i);
            this.aStack_.push(i);
            this.mStack_.push(this.m_);
            this.m_ = J(B(), this.m_)
        };
        q.restore = function() {
            if (this.aStack_.length) {
                v(this.aStack_.pop(), this);
                this.m_ = this.mStack_.pop()
            }
        };
        function h(i) {
            return isFinite(i[0][0]) && isFinite(i[0][1]) && isFinite(i[1][0]) && isFinite(i[1][1]) && isFinite(i[2][0]) && isFinite(i[2][1])
        }
        function aa(j, i, p) {
            if (!h(i)) {
                return
            }
            j.m_ = i;
            if (p) {
                var Z = i[0][0] * i[1][1] - i[0][1] * i[1][0];
                j.lineScale_ = N(H(Z))
            }
        }
        q.translate = function(m, j) {
            var i = [[1, 0, 0], [0, 1, 0], [m, j, 1]];
            aa(this, J(i, this.m_), false)
        };
        q.rotate = function(j) {
            var p = A(j);
            var m = l(j);
            var i = [[p, m, 0], [ - m, p, 0], [0, 0, 1]];
            aa(this, J(i, this.m_), false)
        };
        q.scale = function(m, j) {
            this.arcScaleX_ *= m;
            this.arcScaleY_ *= j;
            var i = [[m, 0, 0], [0, j, 0], [0, 0, 1]];
            aa(this, J(i, this.m_), true)
        };
        q.transform = function(Z, p, ah, ag, j, i) {
            var m = [[Z, p, 0], [ah, ag, 0], [j, i, 1]];
            aa(this, J(m, this.m_), true)
        };
        q.setTransform = function(ag, Z, ai, ah, p, j) {
            var i = [[ag, Z, 0], [ai, ah, 0], [p, j, 1]];
            aa(this, i, true)
        };
        q.drawText_ = function(am, ak, aj, ap, ai) {
            var ao = this.m_,
            at = 1000,
            j = 0,
            ar = at,
            ah = {
                x: 0,
                y: 0
            },
            ag = [];
            var i = u(E(this.font), this.element_);
            var p = ac(i);
            var au = this.element_.currentStyle;
            var Z = this.textAlign.toLowerCase();
            switch (Z) {
            case "left":
            case "center":
            case "right":
                break;
            case "end":
                Z = au.direction == "ltr" ? "right": "left";
                break;
            case "start":
                Z = au.direction == "rtl" ? "right": "left";
                break;
            default:
                Z = "left"
            }
            switch (this.textBaseline) {
            case "hanging":
            case "top":
                ah.y = i.size / 1.75;
                break;
            case "middle":
                break;
            default:
            case null:
            case "alphabetic":
            case "ideographic":
            case "bottom":
                ah.y = -i.size / 2.25;
                break
            }
            switch (Z) {
            case "right":
                j = at;
                ar = 0.05;
                break;
            case "center":
                j = ar = at / 2;
                break
            }
            var aq = V(this, ak + ah.x, aj + ah.y);
            ag.push('<g_vml_:line from="', -j, ' 0" to="', ar, ' 0.05" ', ' coordsize="100 100" coordorigin="0 0"', ' filled="', !ai, '" stroked="', !!ai, '" style="position:absolute;width:1px;height:1px;">');
            if (ai) {
                w(this, ag)
            } else {
                G(this, ag, {
                    x: -j,
                    y: 0
                },
                {
                    x: ar,
                    y: i.size
                })
            }
            var an = ao[0][0].toFixed(3) + "," + ao[1][0].toFixed(3) + "," + ao[0][1].toFixed(3) + "," + ao[1][1].toFixed(3) + ",0,0";
            var al = n(aq.x / d) + "," + n(aq.y / d);
            ag.push('<g_vml_:skew on="t" matrix="', an, '" ', ' offset="', al, '" origin="', j, ' 0" />', '<g_vml_:path textpathok="true" />', '<g_vml_:textpath on="true" string="', af(am), '" style="v-text-align:', Z, ";font:", af(p), '" /></g_vml_:line>');
            this.element_.insertAdjacentHTML("beforeEnd", ag.join(""))
        };
        q.fillText = function(m, i, p, j) {
            this.drawText_(m, i, p, j, false)
        };
        q.strokeText = function(m, i, p, j) {
            this.drawText_(m, i, p, j, true)
        };
        q.measureText = function(m) {
            if (!this.textMeasureEl_) {
                var i = '<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';
                this.element_.insertAdjacentHTML("beforeEnd", i);
                this.textMeasureEl_ = this.element_.lastChild
            }
            var j = this.element_.ownerDocument;
            this.textMeasureEl_.innerHTML = "";
            this.textMeasureEl_.style.font = this.font;
            this.textMeasureEl_.appendChild(j.createTextNode(m));
            return {
                width: this.textMeasureEl_.offsetWidth
            }
        };
        q.clip = function() {};
        q.arcTo = function() {};
        q.createPattern = function(j, i) {
            return new T(j, i)
        };
        function U(i) {
            this.type_ = i;
            this.x0_ = 0;
            this.y0_ = 0;
            this.r0_ = 0;
            this.x1_ = 0;
            this.y1_ = 0;
            this.r1_ = 0;
            this.colors_ = []
        }
        U.prototype.addColorStop = function(j, i) {
            i = F(i);
            this.colors_.push({
                offset: j,
                color: i.color,
                alpha: i.alpha
            })
        };
        function T(j, i) {
            Q(j);
            switch (i) {
            case "repeat":
            case null:
            case "":
                this.repetition_ = "repeat";
                break;
            case "repeat-x":
            case "repeat-y":
            case "no-repeat":
                this.repetition_ = i;
                break;
            default:
                O("SYNTAX_ERR")
            }
            this.src_ = j.src;
            this.width_ = j.width;
            this.height_ = j.height
        }
        function O(i) {
            throw new P(i)
        }
        function Q(i) {
            if (!i || i.nodeType != 1 || i.tagName != "IMG") {
                O("TYPE_MISMATCH_ERR")
            }
            if (i.readyState != "complete") {
                O("INVALID_STATE_ERR")
            }
        }
        function P(i) {
            this.code = this[i];
            this.message = i + ": DOM Exception " + this.code
        }
        var X = P.prototype = new Error;
        X.INDEX_SIZE_ERR = 1;
        X.DOMSTRING_SIZE_ERR = 2;
        X.HIERARCHY_REQUEST_ERR = 3;
        X.WRONG_DOCUMENT_ERR = 4;
        X.INVALID_CHARACTER_ERR = 5;
        X.NO_DATA_ALLOWED_ERR = 6;
        X.NO_MODIFICATION_ALLOWED_ERR = 7;
        X.NOT_FOUND_ERR = 8;
        X.NOT_SUPPORTED_ERR = 9;
        X.INUSE_ATTRIBUTE_ERR = 10;
        X.INVALID_STATE_ERR = 11;
        X.SYNTAX_ERR = 12;
        X.INVALID_MODIFICATION_ERR = 13;
        X.NAMESPACE_ERR = 14;
        X.INVALID_ACCESS_ERR = 15;
        X.VALIDATION_ERR = 16;
        X.TYPE_MISMATCH_ERR = 17;
        G_vmlCanvasManager = e;
        CanvasRenderingContext2D = D;
        CanvasGradient = U;
        CanvasPattern = T;
        DOMException = P
    })()
};